package com.baofu.paycore.service.facade.model.pay;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Map;

/**
 * 付款方资金明细
 *
 * User: xin deng  Date: 16/4/18 ProjectName: paycore Version: 1.0
 */
@Setter
@Getter
@ToString
public class FundDetailInfoDTO implements Serializable {

    /**
     * 资金账户号
     */
    @Length(max = 32,message = "资金账户号不能超过32位")
    private String accountNo;

    /**
     * 支付工具类型
     */
    @NotBlank(message = "支付工具类型不能为空")
    private String payToolType;

    /**
     * 支付工具子类型
     */
    private String payToolSubType;

    /**
     * 货币类型
     */
    @NotBlank(message = "货币类型不能为空")
    @Length(max=3,message = "货币类型超过最大长度")
    private String ccy;

    /**
     * 支付工具支付金额
     */
    @Min(value = 1,message = "支付工具支付金额必须大于0")
    @NotNull(message = "支付工具支付金额不能为空")
    private Long payToolAmount;

    /**
     * 业务收费金额
     */
    private Long bizChargeAmount;

    /**
     * 业务手续费账户
     */
    private String bizFeeAccount;

    /**
     * 银行代码
     */
    private String bankCode;

    /**
     * 卡类型
     */
    private String cardType;

    /**
     * 公私标识
     */
    private String opFlag;

    /**
     * 协议组成编号
     */
    private String  agreeRelId;

    /**
     * 绑卡协议号
     */
    private String agreementNo;

    /**
     * 资金明细扩展信息
     */
    private Map<String,String> fundDetailExt;

    /**
     * 备注
     */
    @Length(max = 128,message = "备注信息长度不能超过128位")
    private String description;

}
